// 表格中容量大小的排序比较
// 单位转为KiB比较
function toKIBUnit(size, unit) {
  let finalSize = size;
  if(size != 0) {
    switch(unit) {
      case 'KiB':
        finalSize = size;
        break;
      case 'MiB':
        finalSize = finalSize * Math.pow(1024,1);
        break;
      case 'GiB':
        finalSize = finalSize * Math.pow(1024,2);
        break;
      case 'PiB':
        finalSize = finalSize * Math.pow(1024,3);
        break;
    }
  }
  return finalSize;
}
// 容量排序比较 格式：1 KiB
function sizeCompare(a, b) {
  if(a === 0 && b!== 0) {
    return bKiBSize - 0;
  }else if(b === 0 && a!== 0) {
    return 0 - aKiBSize
  }else if(a===0 && b===0) {
    return 0
  }
  let aUnit = a.indexOf(' ')!=-1 ? a.slice(a.indexOf(' ')+1) : '';
  let aSize = a.indexOf(' ')!=-1 ? a.slice(0,a.indexOf(' ')) : 0;
  let bUnit = b.indexOf(' ')!=-1 ? b.slice(b.indexOf(' ')+1) : '';
  let bSize = b.indexOf(' ')!=-1 ? b.slice(0,b.indexOf(' ')) : 0;
  let aKiBSize = toKIBUnit(aSize, aUnit);
  let bKiBSize = toKIBUnit(bSize, bUnit);
  return bKiBSize - aKiBSize
}

// ip地址排序比较
function sortIp(a, b) {
  let num1=a, num2=b;
  if(a=='-' || !a) {
    num1 = '0';
  }
  if(b=='-' || !b) {
    num2 = '0';
  }
  const ip1 = num1.split('.').map(e => e.padStart(3,'0')).join('')
  const ip2 = num2.split('.').map(e => e.padStart(3,'0')).join('')
  return ip1 - ip2
}

// 对名称进行排序
function sortName(a, b) {
  if (a < b) {
    return -1;
  }
  if (a > b) {
    return 1;
  }
  return 0;
}

export {
  sizeCompare,
  sortIp,
  sortName
}